import { getTradeInfoByBuyNowApi, getTradeInfoByCartApi, createOrderApi, getWeiXinPayParamsApi } from '../../../api/pay';
import { getDefaultAddressApi } from '../../../api/address';
import { formatDate } from '../../../utils/tools';

const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    buyName: '', // 购买人名称
    buyPhone: null, // 购买人手机号
    deliveryDate: '请选择配送时间', // 期望送达日期
    remarks: '', // 客户备注
    totoalPrice: '', // 总价
    cartList: [], // 购物车列表
    isShowPopup: false, // 日期选项卡显示与隐藏
    minDate: new Date().getTime(), // 可选最小时间格式
    currentDate: new Date().getTime(), // 当期时间
    goodsId: '',
    blessing: '',
    address: {},
  },
  handleShowPopup(){
    this.setData({
      isShowPopup: true
    })
  },
  /**
   * 点击日期timepicker取消按钮
   */
  handleCancelTimePicker(){
    this.setData({
      isShowPopup: false
    })
  },
  handleConfirmTimePicker(e) {
    const deliveryDate = formatDate(e.detail);
    this.setData({
      isShowPopup: false,
      deliveryDate: deliveryDate
    })
  },
  /**
   * 关闭日期选项卡
   * 
   */

  onClose(){
    this.setData({
      isShowPopup: false
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const { goodsId, blessing } = options;
    this.data.goodsId = goodsId;
    this.data.blessing = blessing;
  },

  // 支付
  async pay() {
    // 1. 创建订单，得到订单号
    const { address: { id }, buyName, buyPhone, deliveryDate, remarks, cartList } = this.data;
    const orderNo = await createOrderApi({
      buyName, buyPhone, deliveryDate, remarks, cartList, userAddressId: id
    });
    // 2. 发送请求，获取用于微信支付的参数
    const res = await getWeiXinPayParamsApi(orderNo);
    // 3. 发起微信支付
    /*
      timeStamp 时间戳
      nonceStr 随机字符串
      package 微信支付订单号
      signType 签名算法 md5
      paySign 签名
    */
    wx.requestPayment({
      ...res,
      success() {
        console.log('支付成功');
      },
      fail() {
        console.log('支付失败');
      }
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getTradeInfo();
    this.getAddress();
  },

  async getTradeInfo() {
    const { goodsId, blessing } = this.data;
    let res
    if (goodsId) {
      // 商品详情点击立即购买
      res = await getTradeInfoByBuyNowApi(goodsId, blessing)
    } else {
      // 购物车点击去结算
      res = await getTradeInfoByCartApi()
    }
    this.setData({
      totalPrice: res.totalAmount,
      cartList: res.cartVoList
    })
  },

  async getAddress() {
    let address = app.globalData.selectedAddress;
    if (!address.name) {
      address = await getDefaultAddressApi();
    }
    this.setData({
      address
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})